package com.mini.es.service;

import com.mini.es.model.EsBusinessStudentBigLessonXcx;
import com.mini.vo.*;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.Date;
import java.util.List;
import java.util.Set;

/**
 * @author anjl
 * @date 2021/3/17
 **/
public interface EsBusinessStudentBigLessonXcxService {

    Iterable<EsBusinessStudentBigLessonXcx> save(List<EsBusinessStudentBigLessonXcx> newList);
    /**
     * 根据bigLessonUpdateTime获取最新的数据
     */
    EsBusinessStudentBigLessonXcx findLatestUpdateTimeData();

    /**
     * 根据secondOrderUpdateTime获取最新的数据
     */
    EsBusinessStudentBigLessonXcx findLatestSecondOrderUpdateTimeData();

    EsBusinessStudentBigLessonXcx findLatestDeptUpdateTimeData();

    /**
     * 根据mysqlUpdateTime获取最新的数据
     */
    EsBusinessStudentBigLessonXcx findLatestMysqlUpdateTimeData();

    List<EsBusinessStudentBigLessonXcx> findAllById(List<String> orderNoList);

    /**
     * 通过小课订单查询大课订单数据
     */
    List<EsBusinessStudentBigLessonXcx> findByMiniOrderNoIn(List<String> miniOrderNoList);

    /**
     * 根据组、运营专员进行分组统计
     */
    List<KanbanDataFormatVO> summaryDataByUser(KanbanPageCondition condition);

    Page<EsBusinessStudentBigLessonXcx> pageBySecondOrderId(Long secondOrderId, Date secondOrderUpdateTime, Pageable pageable);

    Page<EsBusinessStudentBigLessonXcx> pageByMiniTeacherId(Long miniTeacherId, Date deptUpdateTime, Pageable pageable);

    Page<EsBusinessStudentBigLessonXcx> pageBySecondTeacherId(Long secondTeacherId, Date deptUpdateTime, Pageable pageable);

    Page<EsBusinessStudentBigLessonXcx> pageBySku(Long sku, Pageable pageable);

    Page<EsBusinessStudentBigLessonXcx> pageByCondition(BigLessonOrderCondition condition);

    List<EsBusinessStudentBigLessonXcx> findDeposit(Set<String> relatedKeySet, String orderState, Integer orderDepositType);

//    PageResultVO<BigLessonOrderPageVO> bigLessonXcxDtoToVo();
}
